[% setvar title The Perl 6 Summary for the week ending 2004-03-07 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 2004-03-07'></a><h1>The Perl 6 Summary for the week ending 2004-03-07</h1>
<p>Time marches on, and another summary gets written, sure as eggs are eggs
and chromatic is a chap with whom I will never start a sentence. We
start, as always, with perl6-internals.</p>
<a name='Platform games'></a><h2>Platform games</h2>
<p>Work continued this week on expanding the number of known (and
preferably known good) platforms in the <b><i>PLATFORMS</i></b> file.</p>
<a name='Languages tests'></a><h2>Languages tests</h2>
<p>Dan reckons it's time to be a little more aggressive with tests for
ancillary stuff, in particular the contents of the <b><i>languages</i></b>
subdirectory. He called for language maintainers (and any other
interested parties) to at least get minimal tests written for all the
languages in the languages directory, and to get those welded to the
<code>languages-test</code> makefile target.</p>
<p><a href='http://groups.google.com/groups?selm=a06010201bc68ee3f3f3c@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='IMCC and objects/methods'></a><h2>IMCC and objects/methods</h2>
<p>Tim Bunce congratulated everyone on Parrot 0.1.0 before asking about
where we stood with IMCC and objects/methods. Leo confirmed Tim's
supposition that there is no syntactic support for objects and methods
in IMCC, at least in part because there's been no discussion of how
such syntax should look.</p>
<p><a href='http://groups.google.com/groups?selm=20040301110726.GF20958@dansat.data-plan.com' target='_blank'>groups.google.com</a></p>
<a name='Parrotbug reaches 0.0.1'></a><h2>Parrotbug reaches 0.0.1</h2>
<p>Jerome Quelin responded to Dan's otherwise ignored request for a parrot
equivalent of <b><i>perlbug</i></b> when he offered an implementation of
<b><i>parrotbug</i></b> for everyone's perusal, but didn't go so far to add it to
the distribution. I don't think it's been checked into the repository
yet, but it'll probably go in <b><i>tools/dev/</i></b> when it does.</p>
<p>Later in the week, he actually got it working, sending mail to the
appropriate mailing lists. With any luck the mailing lists themselves
will be up and running by the time you read this.</p>
<p><a href='http://groups.google.com/groups?selm=200403012028.13070.jquelin@mongueurs.net' target='_blank'>groups.google.com</a></p>
<a name='Subclassing bug'></a><h2>Subclassing bug</h2>
<p>Jens Rieks found what looked like a problem with subclassing, which
turned out to be a problem with <code>clone</code> not going deep enough. Simon
Glover tracked it to its den and Dan Sugalski fixed it.</p>
<p><a href='http://groups.google.com/groups?selm=200403022220.20499.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<a name='Good news! Bad news!'></a><h2>Good news! Bad news!</h2>
<p>Good news! Dan says the infrastructure is in place to do delegated
method calls for vtable functions with objects. Bad news! It doesn't
actually work because it's impossible to inherit from
<b><i>delegate.pmc</i></b> properly. Dan pleaded for someone to take a look at
<b><i>pmc2c2.pl</i></b> and or <b><i>lib/Parrot/Pmc2c.pm</i></b> and fix things so that
the generated code is heritable.</p>
<p><a href='http://groups.google.com/groups?selm=a06010201bc6a51c938a5@' target='_blank'>groups.google.com</a>[10.254.6.39]</p>
<a name='Parrot m4 updated'></a><h2>Parrot m4 updated</h2>
<p>Bernhard Schmalhofer posted a patch to improve the Parrot
implementation of the m4 macro language.</p>
<p><a href='http://groups.google.com/groups?selm=rt-3.0.8-27316-80413.12.8637727827157@perl.org' target='_blank'>groups.google.com</a></p>
<a name='Use vim?'></a><h2>Use vim?</h2>
<p>I don't use vim, but it seems that Leo Tötsch does. He's added some
handy dandy vim syntax files for IMC code. If you're a vim user you
might like to check it out. Leo points out that the syntax tables might
well be handy if you don't know all 1384 opcode variants by heart.</p>
<p><a href='http://groups.google.com/groups?selm=404450D6.6080306@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Parrotris'></a><h2>Parrotris</h2>
<p>Sadly, Jens Rieks' Parrot and SDL implementation of tetris didn't quite
make it under the wire for the 0.1.0 release. However, Leo has got
round to trying it and is impressed, though he did spot a few bugs (it
doesn't spot that the game is over for instance). Jens is working on
fixing those (and on adding new features), which he reckons will go a
deal faster when IMCC has better syntactic support for OO techniques.</p>
<p><a href='http://groups.google.com/groups?selm=200403020948.i229mof18163@thu8.leo.home' target='_blank'>groups.google.com</a></p>
<a name='Dates and Times'></a><h2>Dates and Times</h2>
<p>To paraphrase Barbie: Dates and Times are Hard. Not that hardness has
ever stopped Dashing Dan Sugalski before. This time he waded into the
swamp that is Parrot's handling of dates, times, intervals and all that
other jazz. He started by soliciting opinions. He got quite a few.</p>
<p>The discussion can probably be divided into two camps: KISS (Keep it
Simple) people, and DTRT (Do The Right Thing) people. But KISS still
has it's complexities (which Epoch do we want? Should time be a
floating point value?) and what, exactly, is the Right Thing? The catch
is, time is a messily human thing, and computers are really bad at
messy humanity.</p>
<p>Larry said that Dan could do what he wants with Parrot, but he wants
Perl 6's standard interface to be a floating point seconds since
2000. He argues that &quot;floating point will almost always have enough
precision for the task at hand, and by the time it doesn't, it
will. :-)&quot;. He also argued that normal users &quot;should <i>never</i> have to
remember the units of the fractional seconds&quot;.</p>
<p>Zellyn Hunter pointed everyone at Dave Rolsky's excellent article on
the complexities of handling dates and times with a computer.</p>
<p>Discussion is ongoing, but it seems that Larry and Dan are leaning
towards the KISS approach.</p>
<p><a href='http://groups.google.com/groups?selm=a06010204bc6bb752bc7c@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<p><a href='http://www.perl.com/pub/a/2003/03/13/datetime.html' target='_blank'>www.perl.com</a></p>
<a name='Initializers, finalizers and fallbacks'></a><h2>Initializers, finalizers and fallbacks</h2>
<p>Anyone who has been reading the internals list for any length of time,
or who has chatted to Dan about Parrot on the #parrot irc channel will
be only too aware that Dan isn't the greatest fan of the OO silver
bullet. So, getting the initial objects implementation out there was
the sort of thing he probably hoped would mean he didn't have to come
back to objects for a while. Except, once you've got part of an object
implementation, the need for the rest of it just seems to become more
pressing.</p>
<p>So, poor Dan's been doing more OO stuff. This time he sketched out
where he was going with initialization, finalization and fallback
method location. The basic idea is that, instead of mandating
particular method names for different tasks (which seems like the easy
approach, but doesn't work across languages), we mandate particular
properties which tag various methods as being
initializers/finalizers/fallbacks. He outlined his initial set of
standard properties and asked for comments.</p>
<p>Leo liked the basic idea, but suggested that, in the absence of any
such properties on a class's methods, Parrot should fall back to some
methods on a delegate PMC.</p>
<p><a href='http://groups.google.com/groups?selm=a06010205bc6bc09fea71@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='OO Benchmarks'></a><h2>OO Benchmarks</h2>
<p>Leo posted the results of a couple of benchmarks. They weren't very
encouraging. It seems there was a memory leak. And some inefficiencies
in object creation. And some more inefficiencies in object creation. By
the end of the mini thread, things had got a good deal faster. Quite
where it puts us against Perl 5 and Python wasn't mentioned.</p>
<p><a href='http://groups.google.com/groups?selm=40473F09.8050505@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Parrot dependencies'></a><h2>Parrot dependencies</h2>
<p>Michael Scott, who has been doing sterling work on Parrot's
documentation wanted to remove some non-modified, non-parrot Perl
modules from the Parrot distribution and have people install them from
CPAN. Dan disagreed quite strongly. The current rule of thumb is that
Parrot is allowed to depend on finding a Perl 5.005_0x distribution and
a C compiler. Any Perl modules it needs that can't be found in that
distribution should be provided as part of the Parrot distribution.</p>
<p>Larry argued that we should separate the notion of the developer
distribution from the user distribution. The developer codebase is
allowed to have any number of external dependencies (&quot;dependencies out
the wazoo&quot; was Larry's chosen phrase), and the (for plural values of
'the') comes with all the bells and whistles a distributer sees fit to
include. He argued that the developer codebase should be completely
unusable by anyone but developers to prevent ISPs from installing that
and then claiming to &quot;support Perl&quot;.</p>
<p><a href='http://groups.google.com/groups?selm=E11D5C7F-6DE9-11D8-869E-000A95C50226@mac.com' target='_blank'>groups.google.com</a></p>
<a name='Vtables as collectible objects'></a><h2>Vtables as collectible objects</h2>
<p>Dan wondered whether we were going to need to treat vtables as garbage
collectible objects, and if we did, what kind of hit that would
entail. He and Leo discussed it, and Leo reinvented refcounting as
being a possible way to go rather than full DOD type collection.</p>
<p><a href='http://groups.google.com/groups?selm=a06010205bc6cf5235fe9@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Continuing dumper improvement'></a><h2>Continuing dumper improvement</h2>
<p>Jens Rieks added ParrotObject support to his Parrot data dumper. Dan
applied it. Go Jens.</p>
<p><a href='http://groups.google.com/groups?selm=200403041914.23770.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<a name='Freezing strings'></a><h2>Freezing strings</h2>
<p>Brent Dax is working on writing a parrot implementation of
Parrot::Config. His initial idea for implementation involves generating
a PerlHash of configuration info and then freezing it to disk. However,
when he tried it he had problems with freezing strings, so he asked for
help. It turned out to be a simple matter of unimplemented functions,
which he and Leo rapidly implemented. A patch with Brent's
implementation appeared shortly afterwards.</p>
<p><a href='http://groups.google.com/groups?selm=40492BAD.5070001@brentdax.com' target='_blank'>groups.google.com</a></p>
<a name='A Perl task - Benchmarking'></a><h2>A Perl task - Benchmarking</h2>
<p>Leo wondered if anyone could implement an equivalent of perlbench for
parrot's benchmarks to do speed comparisons of Parrot, Perl, Python etc
implementations. Sebastien Riedel delivered the goods.</p>
<p><a href='http://groups.google.com/groups?selm=4049C44F.3000803@toetsch.at' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<a name='Exegesis 7'></a><h2>Exegesis 7</h2>
<p>Everyone carried on discussing Damian's Exegesis 7 on Perl6::Format,
there was even a surprise appearance by Tom Christiansen, who
demonstrated a novel, if computationally intractable, approach to
generating fully justified text.</p>
<a name='Multi matching'></a><h2>Multi matching</h2>
<p>Remember last week, Larry had proposed using <code>&amp;</code> in Perl 6 rules as a
way of matching multiple rules at the same point in the string. Damian
liked it a lot and said he'd be delighted to add support for it to the
semi mythical Perl6::Rules module. So, Larry said the word (&quot;Execute!&quot;,
which wasn't quite the word everyone expected) so Damian tugged his
forelock and added it to his todo list. Questions like &quot;What are the
precedence rules for <code>&amp;</code> and <code>|</code> in regular expressions then?&quot;
haven't been asked yet.</p>
<p><a href='http://groups.google.com/groups?selm=4044228E.9000702@conway.org' target='_blank'>groups.google.com</a></p>
<a name='Compile-time undefined sub detection'></a><h2>Compile-time undefined sub detection</h2>
<p>Nigel Sandever wondered if Perl 6 will be able to detect undefined subs
at compile time. Larry thought it would be in theory, if you ask it to
check in a <code>CHECK</code> block, and you're prepared to assume that no <code>eval</code>
or <code>INIT</code> block will fill in the blank later, and there's no
<code>AUTOLOAD</code> that might catch it. Sounds rather a like &quot;Not in the
general case, no&quot; to me.</p>
<p>Bringing <code>CHECK</code> and <code>INIT</code> up prompted Rafael Garcia-Suarez to ask
what the rules would be for them in Perl 6 because they're pretty broken
in Perl 5. (Sometimes you want <code>CHECK</code> and <code>INIT</code> semantics to work
well when you're loading a module at runtime, and Perl 5 doesn't do
that). It looks like he's going to get his heart's desire on this (A big
&quot;Yay!&quot; from the direction of Gateshead). Dan Sugalski popped over from
perl6-internals to point out that Parrot would be using properties
rather than specifically named blocks for this sort of stuff.</p>
<p>Larry eventually made a ruling which uses properties in a rather
cunning fashion. Check his message for the details.</p>
<p><a href='http://groups.google.com/groups?selm=1103_1078441478@nntp.perl.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=20040307023944.GA27527@wall.org' target='_blank'>groups.google.com</a> -- Larry on magic blocks</p>
<a name='Announcements, Apologies, Acknowledgements'></a><h1>Announcements, Apologies, Acknowledgements</h1>
<p>Crumbs, another Monday night, another summary finished. I've got to be
careful here, it might by habit forming.</p>
<p>If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl. You might also like to send me feedback at
mailto:<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>, or drop by my website.</p>
<p><a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> -- The Perl Foundation</p>
<p><a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> -- Perl 6 Development site</p>
<p><a href='http://www.bofh.org.uk/' target='_blank'>www.bofh.org.uk</a> -- My website, &quot;Just a Summary&quot;</p>
</div>
